package main

import "fmt"

func printArray1(arr [5]int) {
	arr[0] = 100
	for i, v := range arr {
		fmt.Println(i, v)
	}
}

func printArray2(arr *[5]int) {
	arr[0] = 100
	for i, v := range arr {
		fmt.Println(i, v)
	}
}

func main() {
	var arr1 [5]int
	arr2 := [4]int{1, 3, 5, 7}
	arr3 := [...]int{2, 4, 6, 8, 10}
	var grid [4][5]int

	fmt.Println(arr1, arr2, arr3, grid)

	for i, v := range arr2 {
		fmt.Println(i, v)
	}

	for _, v := range arr3 {
		fmt.Println(v)
	}
	// 长度不匹配会编译错误
	//printArray1(arr2)

	fmt.Println("printArray1(arr1)")
	printArray1(arr1)
	fmt.Println("printArray1(arr3)")
	printArray1(arr3)
	// 将数组传到方法中进行修改，并不会影响方法外面的原数组的值
	fmt.Println("arr1 and arr3")
	fmt.Println(arr1, arr3)

	// 数组要想在传入方法中修改能影响到外面，需要传数组的指针
	fmt.Println("printArray2(arr1)")
	printArray2(&arr1)
	fmt.Println("printArray2(arr3)")
	printArray2(&arr3)
	// 将数组传到方法中进行修改，并不会影响方法外面的原数组的值
	fmt.Println("arr1 and arr3")
	fmt.Println(arr1, arr3)
}
